/**
 * 格式化日期，参数为日期格式,默认为yyyy-MM-dd
 * @param style  格式化前的日期
 *  //用法：
 *   console.log(new Date().format('yyyy-MM-dd hh:mm:ss'));  //2019-06-03 12:10:08
 *   console.log(new Date('1992/09/06').format('yyyy-MM-dd'));  //1991-09-06
 * */
Date.prototype.format = function(style){
    if (!style || !(style = style.toString().trim())) style = 'yyyy-MM-dd hh:mm:ss';
    var o = {
        'M+': this.getMonth() + 1, //month
        'd+': this.getDate(),      //day
        'h+': this.getHours(),     //hour
        'm+': this.getMinutes(),   //minute
        's+': this.getSeconds(),   //second
        'q+': Math.floor((this.getMonth() + 3) / 3), //quarter
        'S': this.getMilliseconds() //millisecond
    };
    if (/(y+)/.test(style))
        style = style.replace(RegExp.$1, this.getFullYear().toString().substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp('(' + k + ')').test(style))
            style = style.replace(RegExp.$1, RegExp.$1.length == 1
                ? o[k]
                : ('00' + o[k]).substr(o[k].toString().length));
    return style;
}

/**
 * 是否对象
 * @param value 值
 * */
function isObj (value) {
    return Object.prototype.toString.call(value).slice(8, -1) === 'Object';
}

/**
 * 是否数组
 * @param value值
 * */
function isArray (value) {
    return Object.prototype.toString.call(value).slice(8, -1) === 'Array';
}

/**
 * 数组push去重
 * */
function arrayPush(targetArr,val){
    if (!isArray(targetArr))
        return;
    if (targetArr.indexOf(val) === -1)
        targetArr.push(val);
    return targetArr;
}

function arrayPop(targetArr,val) {
    var index = -1;
    if (!isArray(targetArr))
        return;
    index = targetArr.indexOf(val);
    if ( index !== -1)
        targetArr.splice(index,1);
    return targetArr;
}

/**
 * modal
 */

function Mymodal(el) {
    $(el).toggle();
}

/**
 *获取元素的value
 */
function getEV(selector) {
    return $(selector).val();
}

/**
 *获取元素的text
 */
function getET(selector) {
    return $(selector).text();
}

/**
 * @param str 传入字符串是否非空
 */
function isBlank(str) {
    return str != null && str !== undefined && str.trim().length > 0 ? true : false ;
}

function blank() {
    return '';
}

function blankImg() {
    return '/images/portrait.jpg';
}

function _objToStrMap(obj){
    let strMap = new Map();
    for (let k of Object.keys(obj)) {
        strMap.set(k,obj[k]);
    }
    return strMap;
}
/**
   *json转换为map
   */
function _jsonToMap(jsonStr){
    return _objToStrMap(JSON.parse(jsonStr));
}

function _mapGetValue(key,target) {
    if (!target)
        return blank();
    var map;
    if(typeof(target) == 'string'){
        map = _jsonToMap(target)
    }else {
        map = _jsonToMap(JSON.stringify(target));
    }
    var keys = key.split(".");
    for (var i = 0; i < keys.length; i++) {
        if(i > 0){
            if (map){
                if(typeof(map) == 'string'){
                    map = _jsonToMap(map)

                }else {
                    map = _jsonToMap(JSON.stringify(map));
                }
            } else {
                return blank();
            }
        }
        if (!map)
            return blank();
        map = map.get(keys[i]);
        if (i >= keys.length - 1 )
            return map ? map : blank();
    }


}


function _mapGetImg(key,target) {
    if (!target)
        return blankImg();
    var map;
    if(typeof(target) == 'string'){
        map = _jsonToMap(target)
    }else {
        map = _jsonToMap(JSON.stringify(target));
    }
    var keys = key.split(".");
    for (var i = 0; i < keys.length; i++) {
        if(i > 0){
            if (map){
                if(typeof(map) == 'string'){
                    map = _jsonToMap(map)

                }else {
                    map = _jsonToMap(JSON.stringify(map));
                }
            } else {
                return blankImg();
            }
        }
        if (!map)
            return blankImg();
        map = map.get(keys[i]);
        if (i >= keys.length - 1 )
            return map ? map : blankImg();
    }


}


